<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace utils\Tools;

/**
 * @title 验证格式
 */
class Format {
    /**
     * zouhao619@gmail.com 	zouhao
     * 一些验证方法
     */

    /**
     * 是否是手机号码
     *
     * @param string $phone	手机号码
     * @return boolean
     */
    public static function is_phone($phone) {
        if (strlen($phone) != 11 || !preg_match('/^1[3|4|5|8|7][0-9]\d{4,8}$/', $phone)) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 验证字符串是否为数字,字母,中文和下划线构成
     * @param string $username
     * @return bool
     */
    public static function is_check_string($str) {
        if (preg_match('/^[\x{4e00}-\x{9fa5}\w_]+$/u', $str)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为一个合法的email
     * @param sting $email
     * @return boolean
     */
    public static function is_email($email) {
        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为一个合法的url
     * @param string $url
     * @return boolean
     */
    public static function is_url($url) {
        if (filter_var($url, FILTER_VALIDATE_URL)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为一个合法的ip地址
     * @param string $ip
     * @return boolean
     */
    public static function is_ip($ip) {
        if (ip2long($ip)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为整数
     * @param int $number
     * @return boolean
     */
    public static function is_number($number) {
        if (preg_match('/^[-\+]?\d+$/', $number)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为正整数
     * @param int $number
     * @return boolean
     */
    public static function is_positive_number($number) {
        if (ctype_digit($number)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为小数
     * @param float $number
     * @return boolean
     */
    public static function is_decimal($number) {
        if (preg_match('/^[-\+]?\d+(\.\d+)?$/', $number)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为正小数
     * @param float $number
     * @return boolean
     */
    public static function is_positive_decimal($number) {
        if (preg_match('/^\d+(\.\d+)?$/', $number)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是否为英文
     * @param string $str
     * @return boolean
     */
    public static function is_english($str) {
        if (ctype_alpha($str))
            return true;
        else
            return false;
    }

    /**
     * 是否为中文
     * @param string $str
     * @return boolean
     */
    public static function is_chinese($str) {
        if (preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $str))
            return true;
        else
            return false;
    }

    /**
     * 判断是否为图片
     * @param string $file	图片文件路径
     * @return boolean
     */
    public static function is_image($file) {
        if (file_exists($file) && getimagesize($file === false)) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 是否为合法的身份证(支持15位和18位)
     * @param string $card
     * @return boolean
     */
    public static function is_card($card) {
        if (preg_match('/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/', $card) || preg_match('/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/', $card))
            return true;
        else
            return false;
    }

    /**
     * 验证日期格式是否正确
     * @param string $date
     * @param string $format
     * @return boolean
     */
    public static function is_date($date, $format = 'Y-m-d') {
        $t = date_parse_from_format($format, $date);
        if (empty($t['errors'])) {
            return true;
        } else {
            return false;
        }
    }

}
